home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok22.lha
/
Scroll
/
Scroll.mod
< prev
next >
Wrap
Text File
|
1993-08-15
|
2KB
|
53 lines
(******************************************************
*
* :Program. Scroll.mod
* :Author. Holger Gzella
* :Address. Freischöffenweg 12 D-4600 Dortmund 16
* :Phone. (0231) 85 16 02
* :Version. 1.0
* :Date. 9/7/89 20:51:43
* :Copyright. PD
* :Language. Modula-2
* :Translator. M2Amiga 3.2d
* :Contents. Procedure to create a scrolltext
* :Remark. For Intros Assembler seems to be better,
* :Remark. this is to create an "About"-message or
* :Remark. something like this. Enjoy!
* :Remark. Idea is from an C-program (urgh!) in the
* :Remark. AMIGA-Sonderheft 4 by Christian Wolf.
******************************************************)
IMPLEMENTATION MODULE Scroll;
FROM SYSTEM IMPORT ADR;
FROM Graphics IMPORT ScrollRaster,RastPortPtr,Move,Text,WaitTOF;
FROM Hardware IMPORT ciaa,CiaaPraFlags,CiaaPraFlagSet;
(* Prozedur, die den angegebenen Text an angegebener Stelle scrollt, bis
a) die Anzahl der Wiederholungen erreicht ist
b) der Betrachter die linke Maustaste gedrückt hat
c) einer abschaltet oder
d) die Welt untergeht.
*)
PROCEDURE ScrollX(port:RastPortPtr; w,s,r,l,y:INTEGER; Stuff:ARRAY OF CHAR);
VAR p,c: INTEGER;
BEGIN
p:=0; c:=0;
REPEAT
WaitTOF; (* synchronisieren *)
ScrollRaster(port,s,0,0,y,w-1,y+9); (* scrollen *)
Move(port,w-s-p,y+8); (* Grafikcursor setzen *)
IF l<=c THEN c:=0; (* alles gescrollt? *)
IF r>-1 THEN DEC(r); END (* Wiederholungen -1 *)
END;
Text(port,ADR(Stuff[c]),1); (* 1 Buchstaben zeichnen *)
p:=p+s; (* Hilfszähler erhöhen *)
IF p>8-s THEN p:=0; INC(c); END; (* nächstes Zeichen? *)
UNTIL NOT (gamePort0 IN ciaa.pra) OR (r=0); (* Abbruchbedingung *)
END ScrollX; (* Das war's. *)
END Scroll.